.th SNO VI 2/9/73
.sh NAME
sno \*- Snobol interpreter
.sh SYNOPSIS
.bd sno
[ file ]
.sh DESCRIPTION
.it Sno
is a Snobol III (with slight differences)
compiler and interpreter.
.it Sno
obtains input from the
concatenation of
.it file
and the standard input.
All input through a statement
containing the label `end' is
considered program and is compiled.
The rest is available to `syspit'.
.s3
.it Sno
differs from Snobol III in the following ways.
.s3
There are no unanchored searches.
To get the same effect:
.s3
	a ** b		unanchored search for b
.br
	a *x* b = x c	unanchored assignment
.s3
There is no back referencing.
.s3
	x = "abc"
.br
	a *x* x		is an unanchored search for `abc'
.s3
.i0
Function declaration is different.
The function declaration is
done at compile time by the use of the label `define'.
Thus there is no ability to define functions at run time
and the use of the name `define' is preempted.
There is also no provision for automatic variables
other than the parameters.
For example:
.s3
.lp +8 8
.bd "define	f( )"
.s3
.i0
or
.s3
.lp +8 8
.bd "define	f(a,b,c)"
.s3
.i0
All labels except `define' (even `end')
must have a non-empty statement.
.s3
If `start' is a label in the program,
program execution will start there.
If not, execution begins with the first
executable statement.
`define' is not an executable statement.
.s3
There are no builtin functions.
.s3
Parentheses for arithmetic are not needed.
Normal precedence applies.
Because of this, the arithmetic
operators `/' and `*'
must be set off by space.
.s3
The right side of assignments
must be non-empty.
.s3
Either \*a or " may be used for literal quotes.
.s3
The pseudo-variable `sysppt' is not available.
.sh "SEE ALSO"
Snobol III manual.
(JACM;
Vol. 11 No. 1; Jan 1964; pp 21)
.sh BUGS
